In [ ]:
epochs = 50
यहां हम फेडरेटेड डेटासेट का उपयोग करने के लिए एक नया टूल पेश करते हैं। हमने एक FederatedDataset
वर्ग बनाया है, जिसका उपयोग PyTorch Dataset वर्ग की तरह करने के लिए किया जाता है, और एक फ़ेडरेटेड डेटा लोडर को दिया जाता है FederatedDataLoader
जो एक फ़ेडरेटेड फ़ैशन में इसके लिए पुनरावृत्त करेगा।
लेखक:
NbTranslate के उपयोग द्वारा अनुवाद किया गया: Urvashi Bhattacharyya - Github: @raheja
हम सैंडबॉक्स का उपयोग करते हैं जो हमने पिछले पाठ की खोज की थी
In [ ]:
import torch as th
import syft as sy
sy.create_sandbox(globals(), verbose=False)
फिर एक डेटासेट की खोज करें
In [ ]:
boston_data = grid.search("#boston", "#data")
boston_target = grid.search("#boston", "#target")
हम एक मॉडल और एक अनुकूलक लोड करते हैं
In [ ]:
n_features = boston_data['alice'][0].shape[1]
n_targets = 1
model = th.nn.Linear(n_features, n_targets)
यहां हमने एक FederatedDataset
में प्राप्त डेटा डाला। उन श्रमिकों को देखें जो डेटा का हिस्सा रखते हैं।
In [ ]:
# Cast the result in BaseDatasets
datasets = []
for worker in boston_data.keys():
dataset = sy.BaseDataset(boston_data[worker][0], boston_target[worker][0])
datasets.append(dataset)
# Build the FederatedDataset object
dataset = sy.FederatedDataset(datasets)
print(dataset.workers)
optimizers = {}
for worker in dataset.workers:
optimizers[worker] = th.optim.Adam(params=model.parameters(),lr=1e-2)
हमने इसे FederatedDataLoader
में रखा और विकल्प निर्दिष्ट किए
In [ ]:
train_loader = sy.FederatedDataLoader(dataset, batch_size=32, shuffle=False, drop_last=False)
और अंत में हम युगों पर पुनरावृति करते हैं। आप देख सकते हैं कि शुद्ध और स्थानीय PyTorch प्रशिक्षण की तुलना में यह कैसे समान है!
In [ ]:
for epoch in range(1, epochs + 1):
loss_accum = 0
for batch_idx, (data, target) in enumerate(train_loader):
model.send(data.location)
optimizer = optimizers[data.location.id]
optimizer.zero_grad()
pred = model(data)
loss = ((pred.view(-1) - target)**2).mean()
loss.backward()
optimizer.step()
model.get()
loss = loss.get()
loss_accum += float(loss)
if batch_idx % 8 == 0:
print('Train Epoch: {} [{}/{} ({:.0f}%)]\tBatch loss: {:.6f}'.format(
epoch, batch_idx, len(train_loader),
100. * batch_idx / len(train_loader), loss.item()))
print('Total loss', loss_accum)
इस नोटबुक ट्यूटोरियल को पूरा करने पर बधाई! यदि आपने इसका आनंद लिया है और एआई और एआई सप्लाई चेन (डेटा) के विकेन्द्रीकृत स्वामित्व के संरक्षण की ओर आंदोलन में शामिल होना चाहते हैं, तो आप निम्न तरीकों से ऐसा कर सकते हैं!
हमारे समुदाय की मदद करने का सबसे आसान तरीका सिर्फ रिपॉजिटरी को अभिनीत करना है! यह हमारे द्वारा बनाए जा रहे कूल टूल्स के बारे में जागरूकता बढ़ाने में मदद करता है।
नवीनतम प्रगति पर अद्यतित रहने का सबसे अच्छा तरीका हमारे समुदाय में शामिल होना है! http://slack.openmined.org पर फॉर्म भरकर आप ऐसा कर सकते हैं
हमारे समुदाय में योगदान करने का सबसे अच्छा तरीका एक कोड योगदानकर्ता बनना है! किसी भी समय आप PySyft GitHub जारी करने वाले पृष्ठ पर जा सकते हैं और "Projects" के लिए फ़िल्टर कर सकते हैं। यह आपको सभी शीर्ष स्तर के टिकट दिखाएगा कि आप किन परियोजनाओं में शामिल हो सकते हैं! यदि आप किसी परियोजना में शामिल नहीं होना चाहते हैं, लेकिन आप थोड़ी सी कोडिंग करना चाहते हैं, तो आप "good first issue" चिह्नित गीथहब मुद्दों की खोज करके अधिक "one off" मिनी-प्रोजेक्ट्स की तलाश कर सकते हैं।
यदि आपके पास हमारे कोडबेस में योगदान करने का समय नहीं है, लेकिन फिर भी समर्थन उधार देना चाहते हैं, तो आप हमारे ओपन कलेक्टिव में भी एक बैकर बन सकते हैं। सभी दान हमारी वेब होस्टिंग और अन्य सामुदायिक खर्च जैसे कि हैकाथॉन और मीटअप की ओर जाते हैं!
In [ ]: